package com.tac.service;

import com.github.pagehelper.PageInfo;
import com.tac.common.result.Result;
import com.tac.pojo.Comment;
import com.tac.pojo.Order;
import com.tac.pojo.vo.Page;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface OrderService {

    /**
     * 添加订单 直接计算购物车中选中的商品 生成订单快照
     * @param
     * @return
     */
    @Transactional
    public Result save(Integer userAddressId, String setRemarks);


    /**
     * 添加订单2 直接从商品详情中购买 生成订单快照
     * @param
     * @return
     */
    @Transactional
    public Result save2(Integer pid,Integer quantity, Integer userAddressId,String setRemarks);

    /**
     * 根据id删除订单
     * @param oid
     * @return
     */
    @Transactional
    public Result removeById(Integer oid);

    /**
     * 更新订单 （主要更新状态用）
     * @param oid
     * @return
     */
    @Transactional
    public Result updeteById(Integer oid,Integer status);
    /**
     * 用户查看订单分页 时间排序
     * @param
     * @return
     */
    public Result<Page<List<Order>>> selectAll(Integer page, Integer limit);

    /**
     * 用户根据订单状态查看订单
     * @param status
     * @return
     */
    public Result<Page<List<Order>>> selectByStatus(Integer status, Integer page, Integer limit);

    /**
     * 根据id查看详情
     * @param id
     * @return
     */
    public Result<Order> selectById(Integer id);

    /**
     * 评价
     * @param comments
     * @return
     */
    public Result save(List<Comment> comments);
    //--------------------------------------------------------------------------
    /**
     * 管理员查看所有订单
     * @return
     */
    public Result<PageInfo<Order>> selectAll2(Integer pageNum,Integer pageSize);

    /**
     * 管理员分类型查询订单等功能
     * @return
     */
    public Result<PageInfo<Order>>  selectByStatu2(Integer status, Integer pageNum, Integer pageSize);
}
